package com.meituan.sdk.model.waimaiNg.dish.foodCatUpdate;

import com.meituan.sdk.annotations.ApiMeta;
import java.util.List;
import com.google.gson.reflect.TypeToken;
import javax.validation.constraints.NotBlank;
import java.lang.reflect.Type;
import com.meituan.sdk.internal.utils.JsonUtil;
import com.google.gson.annotations.SerializedName;
import javax.validation.constraints.NotNull;
import com.meituan.sdk.MeituanResponse;
import com.meituan.sdk.MeituanRequest;

/**
* 保存更新分组
* This file was automatically generated.
*/
@ApiMeta(
    path = "/waimai/ng/dish/foodCat/update",
    businessId = 2,
    apiVersion = "10123",
    apiName = "food_cat_update",
    needAuth = true
)
public class FoodCatUpdateRequest implements MeituanRequest<String> {
    /**
    * <p data-diff-id="ct-diff-id-894c5c7a-e698-426c-81c0-31dcb00fa44b"><span style="color: rgba(0, 0, 0, 0.65)">原始的菜品分类名称，更新时必须</span></p>
    */
    @SerializedName("categoryNameOrigin")
    private String categoryNameOrigin;
    /**
    * <p data-diff-id="ct-diff-id-5bcf5143-3dc4-4554-a063-1c29ae1b266c"><span style="color: rgba(0, 0, 0, 0.65)">分组描述，默认空。最多255字，空代表不做任何修改。-1代表清空</span></p>
    */
    @SerializedName("categoryDescription")
    private String categoryDescription;
    /**
    * <p data-diff-id="ct-diff-id-8a85ca51-0647-46d4-9bea-2d607b8dc0eb"><span style="color: rgba(0, 0, 0, 0.65)">菜品分类排序，数字越小，排名越靠前，新建时必须</span></p>
    */
    @SerializedName("sequence")
    private Integer sequence;
    /**
    * <p data-diff-id="ct-diff-id-73237392-3a8e-4148-8243-ae21ee9bd4dd"><span style="color: rgba(0, 0, 0, 0.65)">新建的菜品分类名称</span></p>
    */
    @NotBlank(message = "categoryName不能为空")
    @SerializedName("categoryName")
    private String categoryName;
    /**
    * <p data-diff-id="ct-diff-id-439970fe-1a00-4282-9a57-00f8719c18ef"><span style="color: rgba(0, 0, 0, 0.65)">置顶开关。-1不修改该信息；0 关闭； 1 开启</span></p>
    */
    @SerializedName("topFlag")
    private Integer topFlag;
    /**
    * <p data-diff-id="ct-diff-id-d253ee7d-4862-40c1-b3cc-fbc536b876a5"><span style="color: rgba(0, 0, 0, 0.65)">分组信息。-1：不修改分类信息，0：普通分类；1：必选分类；2：可单独结算分类</span></p>
    */
    @SerializedName("categoryMode")
    private Integer categoryMode;
    /**
    * <p data-diff-id="ct-diff-id-c42ccfcd-e121-4dd6-986d-eb5b606057ea"><span style="color: rgba(0, 0, 0, 0.65)">置顶时间，默认空。-1代表清空。</span><font style="font-size:14px;line-height:22px" data-size="14">设置分组置顶时段，每个分组可从每周的周一至周日中选择时间，每天最多支持5个时段，时段之间不能有重合，时间跨度不能超过24h。</font></p>
    */
    @SerializedName("timeZone")
    private String timeZone;
    /**
    * <p data-diff-id="ct-diff-id-eff59b3d-5d89-4308-b5a7-c35cfefb3c48">场域标识，"wmSelfPick": 外卖到店自提</p>
    */
    @NotBlank(message = "marketplaceId不能为空")
    @SerializedName("marketplaceId")
    private String marketplaceId;
    /**
    * <p data-diff-id="ct-diff-id-3a75a40f-841d-46a6-acbe-fb3d574242c5">售卖场景，0.在外卖主站和该场域同时售卖，接口不传的商品信息直接复用外卖品。  1.仅在该场域售卖，不会复用外卖商品信息，需要传入完整商品信息。（二期支持）</p>
    */
    @NotNull(message = "sellSceneType不能为空")
    @SerializedName("sellSceneType")
    private Integer sellSceneType;
    /**
    * <p data-diff-id="ct-diff-id-4fd7318d-0edd-474d-82ff-fb118aa72ae9">场域与外卖主站的商品差异化信息枚举，sellSceneType传0时使用，用于标识当前场域和外卖差异化的信息有哪些，保存场域品时会根据该字段判断要解析哪些信息。  例如：["Sequence"]</p>
    */
    @SerializedName("diffInfo")
    private List<String> diffInfo;

    public String getCategoryNameOrigin() {
        return categoryNameOrigin;
    }
    public void setCategoryNameOrigin(String categoryNameOrigin) {
        this.categoryNameOrigin = categoryNameOrigin;
    }
    public String getCategoryDescription() {
        return categoryDescription;
    }
    public void setCategoryDescription(String categoryDescription) {
        this.categoryDescription = categoryDescription;
    }
    public Integer getSequence() {
        return sequence;
    }
    public void setSequence(Integer sequence) {
        this.sequence = sequence;
    }
    public String getCategoryName() {
        return categoryName;
    }
    public void setCategoryName(String categoryName) {
        this.categoryName = categoryName;
    }
    public Integer getTopFlag() {
        return topFlag;
    }
    public void setTopFlag(Integer topFlag) {
        this.topFlag = topFlag;
    }
    public Integer getCategoryMode() {
        return categoryMode;
    }
    public void setCategoryMode(Integer categoryMode) {
        this.categoryMode = categoryMode;
    }
    public String getTimeZone() {
        return timeZone;
    }
    public void setTimeZone(String timeZone) {
        this.timeZone = timeZone;
    }
    public String getMarketplaceId() {
        return marketplaceId;
    }
    public void setMarketplaceId(String marketplaceId) {
        this.marketplaceId = marketplaceId;
    }
    public Integer getSellSceneType() {
        return sellSceneType;
    }
    public void setSellSceneType(Integer sellSceneType) {
        this.sellSceneType = sellSceneType;
    }
    public List<String> getDiffInfo() {
        return diffInfo;
    }
    public void setDiffInfo(List<String> diffInfo) {
        this.diffInfo = diffInfo;
    }


    @Override
    public MeituanResponse<String> deserializeResponse(String response) {
        Type type = new TypeToken<MeituanResponse<String>>(){}.getType();
        return JsonUtil.fromJson(response, type);
    }
    @Override
    public String serializeToJson() {
        return JsonUtil.toJson(this);
    }


    @Override
    public String toString() {
        return "FoodCatUpdateRequest{" + "categoryNameOrigin=" + categoryNameOrigin + "," + "categoryDescription=" + categoryDescription + "," + "sequence=" + sequence + "," + "categoryName=" + categoryName + "," + "topFlag=" + topFlag + "," + "categoryMode=" + categoryMode + "," + "timeZone=" + timeZone + "," + "marketplaceId=" + marketplaceId + "," + "sellSceneType=" + sellSceneType + "," + "diffInfo=" + diffInfo + "}";
    }
}
